#include "matriz.h"

double normaUno(Matriz& A, int n)
{
	double res = 0;
	double sumaCol;	
	
	forn(i, n)
	{
		sumaCol = 0;
		forn(j, n)		
			sumaCol += fabs(A[i][j]);		
		
		if (sumaCol > res)
			res = sumaCol;
	}
	
	return res;
}

double normaInf(Matriz& A, int n)
{
	double res = 0;
	double sumaFila;	
	
	forn(i, n)
	{
		sumaFila = 0;
		forn(j, n)		
			sumaFila += fabs(A[i][j]);
		
		if (sumaFila > res)
			res = sumaFila;
	}
	
	return res;
}

void traspuesta(Matriz& A, Matriz& res, int n)
{	
	forn(i, n)
	{
		forn(j, n)
		{
			res[i][j] = A[j][i];
		}		
	}
	
	return ;
}

void swap(Matriz& A, int i, int j, int k, int n) /* swap columna i con columna j en la fija k.  */
{
	double aux = A[i][k];
	A[i][k] = A[j][k];
	A[j][k] = aux;
	return;
}

void mul(Matriz& A, Matriz& B, Matriz& res, int n)
{
	forn(i, n)
	{
		forn(j, n)
		{
			double aux = 0;
			
			forn(k, n)
				aux += A[i][k] * B[k][j];
			
			res[i][j] = aux;
		}
	}
	
	return;
}
